package br.com.bolaofutebolclube.tests;

import java.text.ParseException;
import java.text.SimpleDateFormat;

import org.junit.Assert;
import org.junit.Test;

import br.com.bolaofutebolclube.exception.PalpiteAtrasadoException;
import br.com.bolaofutebolclube.exception.PalpiteInvalidoException;
import br.com.bolaofutebolclube.manager.BolaoFCManagerFactory;
import br.com.bolaofutebolclube.manager.BolaoManager;
import br.com.bolaofutebolclube.model.Bolao;
import br.com.bolaofutebolclube.model.Jogo;
import br.com.bolaofutebolclube.model.Usuario;


public class TesteBolaoManager {

	BolaoManager manager = BolaoFCManagerFactory.getBolaoManager();
	private SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy h:m");
	private Jogo jogo;
	
	public TesteBolaoManager() {
		
		jogo = new Jogo();
		
		try {
			jogo.setData(formatter.parse("01/05/2010 10:00"));
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	@Test
	public void palpiteNegativo() {
		try {
			manager.registrarPalpite(new Usuario(), jogo, new Bolao(), -1, 10);
			Assert.fail("Palpite Invalido!");
		} catch(Exception ex) {
			Assert.assertTrue(true);
		}
	}
	@Test
	public void palpitePossivel() {
		try {
			manager.registrarPalpite(new Usuario(),jogo, new Bolao(), 0, 10);
			Assert.assertTrue(true);
		} catch(Exception ex) {
			Assert.fail("Palpite Valido!");
		}
	}
	@Test
	public void palpiteDepoisJogo() {
		try {
			jogo.setData(formatter.parse("01/01/2009 10:00"));
			manager.registrarPalpite(new Usuario(), jogo, new Bolao(), 0, 10);
			Assert.fail("Palpite vem depois do jogo");
		} catch (PalpiteInvalidoException ex) {
			Assert.fail();
		} catch (ParseException e) {
			Assert.fail();
		} catch (PalpiteAtrasadoException e) {
			Assert.assertTrue(true);
		}
	}
}
